home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-01-28 | 4.6 KB | 174 lines |
- 10 'ELECLENG - Electrical vs. Physical length - 17 NOV 96
- 20 'ref THE ARRL ANTENNA BOOK, 17th edition, page 28-6
- 30 IF EX$=""THEN EX$="EXIT"
- 40 COMMON EX$
- 50 IF PROG$=""THEN GO$=EX$ ELSE GO$=PROG$
- 60 CLS:KEY OFF
- 70 K=299.79 'speed of light factor
- 80 U$="#####.###"
- 90 UL$=STRING$(80,205)
- 100 X$=STRING$(80,32)
- 110 '
- 120 COLOR 15,2,1
- 130 PRINT " TRANSMISSION LINE LENGTH";TAB(57);"by George Murphy VE3ERP ";
- 140 COLOR 1,0:PRINT STRING$(80,223);
- 150 COLOR 7,0
- 160 '
- 170 '.....start
- 180 F=0:L=0:FT=0:N=0:V=0:E=0:W=0:D=0:LN=0
- 190 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 200 GOSUB 1240 'preface
- 210 PRINT UL$;
- 220 COLOR 0,7:LOCATE ,23
- 230 PRINT " Press 1 to continue or 0 to EXIT..."
- 240 COLOR 7,0
- 250 Z$=INKEY$:IF Z$=""THEN 250
- 260 IF Z$="0"THEN CLS:CHAIN GO$
- 270 IF Z$="1"THEN 290
- 280 GOTO 250
- 290 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 300 GOTO 370
- 310 '
- 320 '.....format input line
- 330 LOCATE CSRLIN-1:PRINT SPC(7);
- 340 LOCATE CSRLIN,54:PRINT USING U$;ZZ;
- 350 RETURN
- 360 '
- 370 '.....input data
- 380 IF F THEN 450
- 390 INPUT " ENTER: Frequency of operation in MHz................";F
- 400 IF F=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 450
- 410 ZZ=F:GOSUB 320:PRINT " MHz"
- 420 LOCATE CSRLIN-1,31:PRINT STRING$(7,".")
- 430 GOSUB 880
- 440 '
- 450 IF L OR D THEN 670
- 460 INPUT " ENTER: Length of line in metres.....................";L
- 470 IF L=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 520
- 480 ZZ=L:GOSUB 320:PRINT " metres"
- 490 LOCATE CSRLIN-1,23:PRINT STRING$(10,".")
- 500 GOSUB 880
- 510 '
- 520 IF L OR D THEN 670
- 530 INPUT " ENTER: Length of line in feet.......................";FT
- 540 IF FT=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 590
- 550 L=FT*0.3048:ZZ=L:GOSUB 320:PRINT " metres"
- 560 LOCATE CSRLIN-1,23:PRINT STRING$(10,".")
- 570 GOSUB 880
- 580 '
- 590 IF L OR D THEN 670
- 600 INPUT " ENTER: Electrical length of line in degrees.........";D
- 610 IF D=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 670
- 620 ZZ=D:GOSUB 320:PRINT "<UNK! {00F8}>"
- 630 LOCATE CSRLIN-1,34:PRINT STRING$(11,".")
- 640 LN=CSRLIN-1
- 650 GOSUB 880
- 660 '
- 670 IF N OR D THEN 720
- 680 INPUT " ENTER: Length of line in wavelengths................";N
- 690 IF N=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 720
- 700 ZZ=N:GOSUB 320:PRINT "":GOSUB 880
- 710 '
- 720 IF V THEN 850
- 730 INPUT " ENTER: Velocity factor of line (decimal)............";V
- 740 IF V=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 780
- 750 LOCATE CSRLIN-1,9:PRINT "Velocity factor of line..........."
- 760 ZZ=V:GOSUB 320:PRINT "":GOSUB 880
- 770 '
- 780 IF V THEN 850
- 790 INPUT " ENTER: Dielectric constant..........................";E
- 800 IF E=0 THEN LOCATE CSRLIN-1:PRINT X$;:LOCATE CSRLIN-1:GOTO 850
- 810 V=1/SQR(E):ZZ=V:GOSUB 320:PRINT "":LOCATE CSRLIN-1,9
- 820 PRINT "Velocity factor of line..........."
- 830 GOSUB 880
- 840 '
- 850 IF N*L*F*V THEN 960 ELSE 380
- 860 IF N*L*F*V THEN 960 ELSE 380
- 870 '
- 880 '.....calculate
- 890 IF L=0 AND D*V*F<>0 THEN L=D*V/(1.20083*F)
- 900 IF N=0 AND L*F*V<>0 THEN N=L*F/K/V :GOTO 960
- 910 IF L=0 AND V*N*F<>0 THEN L=K*V*N/F :GOTO 980
- 920 IF F=0 AND V*N*L<>0 THEN F=K*V*N/L :GOTO 1000
- 930 IF V=0 AND L*F*N<>0 THEN V=L*F/K/N :GOTO 1020
- 940 RETURN
- 950 '
- 960 PRINT " Length of line in wavelengths................";USING U$;N
- 970 GOTO 1030
- 980 PRINT " Length of line in metres.....................";USING U$;L
- 990 GOTO 1030
- 1000 PRINT " Frequency of operation in MHz................";USING U$;F
- 1010 GOTO 1030
- 1020 PRINT " Velocity factor of line......................";USING U$;V
- 1030 PRINT UL$;
- 1040 E=(1/V)^2
- 1050 PRINT " Dielectric constant of line..................";USING U$;E
- 1060 PRINT " Length of line in feet.......................";
- 1070 PRINT USING U$;L/0.3048;:PRINT " ft."
- 1080 D=1.20083*F*L/V
- 1090 D$="#####.###<UNK! {00F8}>"
- 1100 IF D>=10 THEN D$="#####.##<UNK! {00F8}>"
- 1110 IF D>=100 THEN D$="#####.#<UNK! {00F8}>"
- 1120 PRINT " Electrical length of line....................";USING D$;D
- 1130 W=K/F
- 1140 PRINT " Free-space wavelength of operating frequency.";USING U$;W;
- 1150 PRINT " metres"
- 1160 PRINT UL$;
- 1170 IF LN=0 THEN 1210
- 1180 LOCATE LN
- 1190 PRINT " Length of line...............................";USING U$;L;
- 1200 PRINT " metres"
- 1210 GOSUB 1610:GOTO 170
- 1220 END
- 1230 '
- 1240 '.....preface
- 1250 TB=8
- 1260 PRINT TAB(TB);
- 1270 PRINT "This program solves equations involving the following factors:"
- 1280 PRINT
- 1290 PRINT TAB(TB);
- 1300 PRINT " - Frequency of operation"
- 1310 PRINT TAB(TB);
- 1320 PRINT " - Line length in metres"
- 1330 PRINT TAB(TB);
- 1340 PRINT " - Line length in feet"
- 1350 PRINT TAB(TB);
- 1360 PRINT " - Line length in electrical wavelengths"
- 1370 PRINT TAB(TB);
- 1380 PRINT " - Line length in electrical degrees"
- 1390 PRINT TAB(TB);
- 1400 PRINT " - Velocity factor of line"
- 1410 PRINT TAB(TB);
- 1420 PRINT " - Dielectric constant of line"
- 1430 PRINT
- 1440 PRINT TAB(TB);
- 1450 PRINT "You will be asked to enter known data in the order shown above."
- 1460 PRINT TAB(TB);
- 1470 PRINT "If the data requested is unknown press <ENTER> to bypass the"
- 1480 PRINT TAB(TB);
- 1490 PRINT "request. If the data requested is essential, you will be asked"
- 1500 PRINT TAB(TB);
- 1510 PRINT "for it again."
- 1520 PRINT
- 1530 PRINT TAB(TB);
- 1540 PRINT "The data input requests are repeated in continuous rotation. When"
- 1550 PRINT TAB(TB);
- 1560 PRINT "sufficient data has been entered for the equations to be solved,"
- 1570 PRINT TAB(TB);
- 1580 PRINT "the values of all the above factors are displayed."
- 1590 RETURN
- 1600 '
- 1610 'HARDCOPY
- 1620 GOSUB 1730:LOCATE 25,2:COLOR 14,6
- 1630 PRINT " Press 1 to print screen, 2 to print screen & ";
- 1640 PRINT "advance paper, or 3 to continue.";:COLOR 7,0
- 1650 Z$=INKEY$:IF Z$="3"THEN GOSUB 1730:RETURN
- 1660 IF Z$="1"OR Z$="2"THEN GOSUB 1730:GOTO 1680
- 1670 GOTO 1650
- 1680 FOR QX=1 TO 24:FOR QY=1 TO 80
- 1690 LPRINT CHR$(SCREEN(QX,QY));
- 1700 NEXT QY:NEXT QX
- 1710 IF Z$="2"THEN LPRINT CHR$(12)
- 1720 GOTO 1620
- 1730 LOCATE 25,1:PRINT STRING$(80,32);:RETURN
-